package Day14;

/**
 * 面试题
 */
public class Day14_M {
    public static void main(String[] args) {
        //1 static 静态的 修饰变量 修饰方法 修饰类 静态代码块

        //1.1 修饰变量 表示该变量为类变量 也叫静态变量 不属于实例 属于类
           //静态变量在程序启动时就被初始化(被调用) 所有该类的实例都共享同一个静态变量 可以通过类名直接访问静态变量
           //public static int count=0;
        //1.2 修饰方法 静态方法 可以通过类名直接调用 静态方法只能直接访问静态变量和调用静态方法
           //public static void count(){}
        //1.3 静态内部类 与外部类的实例无关 可以直接通过外部的类名访问 不能访问外部类的非静态成员 可以访问外部类的静态成员
        //1.4 静态代码块 只在类加载时执行一次 常用于进行类的初始化操作(加载配置文件 初始化静态变量等)

        //静态代码块 普通代码块 构造方法和静态方法的执行顺序
//        类加载阶段：
//        父类静态代码块
//        子类静态代码块
//        对象创建阶段：
//        父类构造方法
//        子类普通代码块（构造代码块）
//        子类构造方法
//        程序运行期间：
//        静态方法（随时调用）
//        请注意，静态方法不能直接访问非静态成员（如实例变量或非静态方法），但可以访问静态成员。而普通代码块（构造代码块）是针对每个对象实例的初始化过程，与具体对象实例相关。
//           //静态代码块--->代码块--->构造方法

        //父子类 父类静态代码块--->子类静态代码块--->父类代码块--->父类构造--->子类代码块--->子类构造
    }
}
